package convert

import (
	"strconv"
	"strings"
)

// ToString 转换为string类型 - 仅保留项目实际使用的核心功能
func ToString(value interface{}) string {
	if value == nil {
		return ""
	}
	
	switch v := value.(type) {
	case string:
		return v
	case bool:
		return strconv.FormatBool(v)
	case int:
		return strconv.Itoa(v)
	case int64:
		return strconv.FormatInt(v, 10)
	case float64:
		return strconv.FormatFloat(v, 'f', -1, 64)
	default:
		return ""
	}
}

// ToInt 转换为int类型 - 简化版本，只处理常见情况
func ToInt(value interface{}) (int, error) {
	switch v := value.(type) {
	case int:
		return v, nil
	case int64:
		return int(v), nil
	case float64:
		return int(v), nil
	case string:
		if v == "" {
			return 0, nil
		}
		return strconv.Atoi(strings.TrimSpace(v))
	case bool:
		if v {
			return 1, nil
		}
		return 0, nil
	case nil:
		return 0, nil
	default:
		return 0, nil // 简化处理，不返回错误
	}
}

// ToBool 转换为bool类型 - 简化版本
func ToBool(value interface{}) (bool, error) {
	switch v := value.(type) {
	case bool:
		return v, nil
	case int, int64:
		return v != 0, nil
	case float64:
		return v != 0, nil
	case string:
		if v == "" {
			return false, nil
		}
		return strconv.ParseBool(strings.TrimSpace(strings.ToLower(v)))
	case nil:
		return false, nil
	default:
		return false, nil // 简化处理，不返回错误
	}
}